package com.cy.dbsys.dao;

import com.cy.commom.pojo.Node;
import com.cy.dbsys.pojo.SysMenu;
import com.cy.dbsys.pojo.SysUserMenu;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface SysMenuDao {
    /**(动态呈现一级菜单)基于菜单id查询菜单信息*/
    List<SysUserMenu> findMenusByIds(List<Integer> menuIds);

    /**(授权模块)基于菜单id查询授权标识*/
    List<String> findPermissions(@Param("menuIds") List<Integer> menuIds);

    /** 使用map充当pojo角色，有什么优势劣势？
     *  1）优势：代码简单，不需要写pojo，一般适合工作量大，开发周期比较短的外包项目
     *  2）劣势：可读性差（打开源码不知道内部要存什么）
     *           值的类型不可控
     * */
    /**1、（用于查询页面）用map分装数据，查询所有,把每一行记录封装到map集合中，再存入list集合返回 */
    List<Map<String,Object>> findObjects();
    /**2、（用于删除）基于菜单id查询菜单记录，看是否有子菜单，如果有及不能删除，没有就删除菜单表中的和菜单与角色关系表中的数据*/
    int getChildCount(Integer id);
    /**3、（用于删除）基于菜单id删除菜单记录*/
    int deleteObject(Integer id);
    /**4、（用于新增）查询上级菜单 用pojo封装数据 */
    List<Node> findZtreeMenuNodes();
    /**5、（用于新增）保存新增信息*/
    int insertObject(SysMenu entity);
    /**6、（用于修改）基于id修改菜单信息*/
    int updateObject(SysMenu entity);
}
